মাল্টি-প্রজেক্ট বিল্ড সিস্টেম এমন একটি প্রক্রিয়া যেখানে একাধিক প্রকল্প (project) একসঙ্গে বিল্ড করা হয়। এটি তখনই প্রয়োজন হয় যখন বিভিন্ন প্রকল্প একে অপরের উপর নির্ভরশীল থাকে এবং একটি সামগ্রিক অ্যাপ্লিকেশন তৈরি করতে একত্রে কাজ করে।
অ্যাপাচি অ্যান্ট মাল্টি-প্রজেক্ট বিল্ড সিস্টেম পরিচালনা করার জন্য খুবই কার্যকর। এটি মূলত ডিপেনডেন্সি ম্যানেজমেন্ট এবং হায়ারারকিকাল বিল্ড স্ট্রাকচার সহজ করতে সহায়তা করে।
মাল্টি-প্রজেক্ট বিল্ড সিস্টেমের গঠন
মূল গঠন
- প্যারেন্ট প্রজেক্ট (Parent Project):
প্রধান প্রজেক্ট যেখানে অন্যান্য প্রজেক্টের (মডিউল বা সাবপ্রজেক্ট) তথ্য সংরক্ষিত থাকে। - সাবপ্রজেক্ট (Subproject):
একাধিক সাবপ্রজেক্ট থাকে, যেগুলো পৃথক build.xml ফাইলের মাধ্যমে কাজ করে।
ডিপেনডেন্সি ম্যানেজমেন্ট
মাল্টি-প্রজেক্ট সিস্টেমে প্রজেক্টগুলো একে অপরের ওপর নির্ভরশীল হতে পারে। ANT এর টার্গেট এবং ডিপেন্ডস বৈশিষ্ট্যের মাধ্যমে এই ডিপেনডেন্সি ম্যানেজ করা হয়।
উদাহরণ: মাল্টি-প্রজেক্ট বিল্ড সিস্টেম
ফোল্ডার স্ট্রাকচার
project/
├── build.xml (Parent Project)
├── module1/
│ └── build.xml (Subproject 1)
├── module2/
│ └── build.xml (Subproject 2)
প্যারেন্ট প্রজেক্ট (Parent) build.xml
<project name="ParentProject" default="build-all" basedir=".">
<property name="module1.dir" value="module1"/>
<property name="module2.dir" value="module2"/>
<target name="clean">
<ant dir="${module1.dir}" target="clean"/>
<ant dir="${module2.dir}" target="clean"/>
</target>
<target name="build">
<ant dir="${module1.dir}" target="build"/>
<ant dir="${module2.dir}" target="build"/>
</target>
<target name="build-all" depends="clean,build">
<echo message="All projects built successfully!"/>
</target>
</project>
সাবপ্রজেক্ট (Subproject) build.xml
module1/build.xml
<project name="Module1" default="build" basedir=".">
<property name="build.dir" value="build"/>
<target name="clean">
<delete dir="${build.dir}"/>
</target>
<target name="build" depends="clean">
<mkdir dir="${build.dir}"/>
<echo message="Building Module 1"/>
</target>
</project>
module2/build.xml
<project name="Module2" default="build" basedir=".">
<property name="build.dir" value="build"/>
<target name="clean">
<delete dir="${build.dir}"/>
</target>
<target name="build" depends="clean">
<mkdir dir="${build.dir}"/>
<echo message="Building Module 2"/>
</target>
</project>
কনফিগারেশন এবং বিল্ড প্রক্রিয়া
বিল্ড প্রসেস
প্যারেন্ট থেকে সব বিল্ড চালানো:
ant -f build.xmlএটি প্যারেন্ট প্রজেক্টের
build-allটার্গেট অনুসারে সাবপ্রজেক্টগুলো বিল্ড করবে।সুনির্দিষ্ট সাবপ্রজেক্ট বিল্ড:
প্যারেন্ট প্রজেক্টের build.xml থেকে নির্দিষ্ট সাবপ্রজেক্ট টার্গেট চালানো যায়।ant -f module1/build.xml
মাল্টি-প্রজেক্ট বিল্ডে অ্যাপাচি অ্যান্টের সুবিধা
- সুবিন্যস্ত স্ট্রাকচার: পৃথক মডিউল এবং প্যারেন্ট কনফিগারেশন বজায় থাকে।
- ডিপেনডেন্সি হ্যান্ডলিং: প্রজেক্টগুলোর মধ্যে নির্ভরশীলতা সহজে ম্যানেজ করা যায়।
- কোড রিইউজ: একাধিক প্রজেক্টে পুনরায় ব্যবহারযোগ্য টাস্ক বা টার্গেট সংজ্ঞায়িত করা যায়।
- স্কেলেবিলিটি: সহজেই নতুন মডিউল যোগ করা যায়।
সারাংশ
অ্যাপাচি অ্যান্ট মাল্টি-প্রজেক্ট বিল্ড সিস্টেম পরিচালনার জন্য একটি চমৎকার টুল। এটি ডিপেনডেন্সি ম্যানেজমেন্ট এবং অর্গানাইজড বিল্ড প্রসেস নিশ্চিত করে। প্যারেন্ট-সাবপ্রজেক্ট স্ট্রাকচার এবং ANT-এর ক্ষমতা ব্যবহার করে জটিল প্রজেক্টগুলোর উন্নয়ন সহজ হয়।